
import java.util.*;
/**
*在地下室里放着n种颜色的手套，手套分左右手，但是每种颜色的左右手手套个数不一定相同。A先生现在要出门，所以他要去地下室选手套。但*是昏暗的灯光让他无法分辨手套的颜色，只能分辨出左右手。所以他会多拿一些手套，然后选出一双颜色相同的左右手手套。现在的问题是，他*至少要拿多少只手套(左手加右手)，才能保证一定能选出一双颜色相同的手套。
*
*给定颜色种数n(1≤n≤13),同时给定两个长度为n的数组left,right,分别代表每种颜色左右手手套的数量。数据保证左右的手套总数均不超过26，且*一定存在至少一种合法方案。
**/
public class Gloves {
    public int findMinimum(int n, int[] left, int[] right) {
        // write code here
        int leftmin = Integer.MAX_VALUE;
        int rightmin = Integer.MAX_VALUE;
        int leftsum = 0,rightsum = 0;;
        //加上某个手套为0
        int ret = 0;
        for(int i = 0;i<left.length;i++) {
            if(0 == left[i] || 0 == right[i]) {
                ret+=left[i]+right[i];
            }else {
                leftmin = Math.min(left[i],leftmin);
                rightmin = Math.min(right[i],rightmin);
                leftsum += left[i];
                rightsum += right[i];
            }       
        }
        leftsum+=ret;
        rightsum+=ret;
        return Math.min(leftsum-leftmin+1,rightsum-rightmin+1) + 1;
    }
}